import Vue from 'vue'

/**
 * 判断元素是否在数组内
 */
Array.prototype.contains = function(obj) {
	var i = this.length;
	while(i--) {
		if(this[i] === obj) {
			return true;
		}
	}
	return false;
}

/**
 * 检查是否为chrome浏览器
 */
Vue.prototype.isChrome = function() {
	var isChrome = navigator.userAgent.toLowerCase().match(/chrome/) != null
	if(isChrome) return true;
	return false;
}

/**
 * 时间秒数格式化
 * @param s 时间戳（单位：秒）
 * @returns {*} 格式化后的时分秒
 */
Vue.prototype.secToTime = function(s) {
	var t;
	if(s > -1) {
		var hour = Math.floor(s / 3600);
		var min = Math.floor(s / 60) % 60;
		var sec = s % 60;
		if(hour < 10) {
			t = '0' + hour + ":";
		} else {
			t = hour + ":";
		}
		if(min < 10) {
			t += "0";
		}
		t += min + ":";
		if(sec < 10) {
			t += "0";
		}
		t += sec.toFixed(0);
	}
	return t;
}

/**
 * 时间转为秒
 * @param time 时间(00:00:00)
 * @returns {string} 时间戳（单位：秒）
 */
Vue.prototype.timeToSec = function(time) {
	var s = '';
	var hour = time.split(':')[0];
	var min = time.split(':')[1];
	var sec = time.split(':')[2];
	s = Number(hour * 3600) + Number(min * 60) + Number(sec);
	return s;
}

/*
 *   功能:实现VBScript的DateAdd功能.
 *   参数:interval,字符串表达式，表示要添加的时间间隔.
 *   参数:number,数值表达式，表示要添加的时间间隔的个数.
 *   参数:date,时间对象.
 *   返回:新的时间对象.
 *   var now = new Date();
 *   var newDate = DateAdd( "d", 5, now);
 *---------------   DateAdd(interval,number,date)   -----------------
 */
Vue.prototype.DateAdd = function(interval, number, date) {
	switch(interval) {
		case "y":
			{
				date.setFullYear(date.getFullYear() + number);
				return date;
				break;
			}
		case "q":
			{
				date.setMonth(date.getMonth() + number * 3);
				return date;
				break;
			}
		case "m":
			{
				date.setMonth(date.getMonth() + number);
				return date;
				break;
			}
		case "w":
			{
				date.setDate(date.getDate() + number * 7);
				return date;
				break;
			}
		case "d":
			{
				date.setDate(date.getDate() + number);
				return date;
				break;
			}
		case "h":
			{
				date.setHours(date.getHours() + number);
				return date;
				break;
			}
		case "m":
			{
				date.setMinutes(date.getMinutes() + number);
				return date;
				break;
			}
		case "s":
			{
				date.setSeconds(date.getSeconds() + number);
				return date;
				break;
			}
		default:
			{
				date.setDate(d.getDate() + number);
				return date;
				break;
			}
	}
}

$.fn.extend({
	/**
	 * 执行动画animate的CSS动画效果
	 * @param 动画效果名
	 */
	animateCss: function(name) {
		var animationEnd = 'webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend';
		this.addClass('animated ' + name).one(animationEnd, function() {
			$(this).removeClass('animated ' + name);
		});
	}
});

/**
 * 判断当前时间是否过期
 * @param time 到期时间 "2017-06-28"
 */
$.expireTime = function(time) {
	var nowDate = new Date().getTime();
	var timestamp = Date.parse(new Date(time));
	if(nowDate > timestamp) {
		return false;
	}
	return true;
}

/**
 * 查询单个字符出现的位置(str:查询的字符串)(ele:查询的字符)
 */
Vue.prototype.findOneString = function(str, ele) {
	var Arr = new Array();
	var point = str.indexOf(ele);
	while(point != -1) {
		Arr.push(point);
		point = str.indexOf(ele, point + 1);
	}
	return Arr;
}

/**
 * 获得两个#号之间的话题(str:查询的字符串)(ele:查询的字符)
 */
Vue.prototype.findTopic = function(str, ele) {
	var a = new Array();
	var b = new Array();
	var c = new Array();
	//获取单个字符出现的位置，加入数组
	var point = str.indexOf(ele);
	while(point != -1) {
		a.push(point);
		point = str.indexOf(ele, point + 1);
	}
	if(a.length <= 0) {
		return "无查询的字符";
	}
	//循环特殊字符的位置索引
	for(var i = 0; i < a.length; i++) {
		//索引大于0时进行
		if(a[i + 1] > 0) {
			//相邻的两个值是前一个值加一等于后一个值
			if(a[i] + 1 == a[i + 1]) {
				//数组移除当前值（前一个）
				b.splice(i, 1);
			} else {
				//将当前值和后一个值存入新数组
				b.push([a[i], a[i + 1]]);
				//跳过后一个值的索引
				i++;
			}
		}
	}
	if(b.length <= 0) {
		return "该数组无正确的前后值";
	}
	//循环指定字符的二维数组
	for(var j = 0; j < b.length; j++) {
		//获取话题数组
		c.push(str.substring(b[j][0] + 1, b[j][1]));
	}
	return c;
}

/**
 * 获得两个#号之间的话题的位置(str:查询的字符串)(ele:查询的字符)
 */
Vue.prototype.findTopicIndex = function(str, ele) {
	var a = new Array();
	var b = new Array();
	var c = new Array();
	//获取单个字符出现的位置，加入数组
	var point = str.indexOf(ele);
	while(point != -1) {
		a.push(point);
		point = str.indexOf(ele, point + 1);
	}
	if(a.length <= 0) {
		return "无查询的字符";
	}
	//循环特殊字符的位置索引
	for(var i = 0; i < a.length; i++) {
		//索引大于0时进行
		if(a[i + 1] > 0) {
			//相邻的两个值是前一个值加一等于后一个值
			if(a[i] + 1 == a[i + 1]) {
				//数组移除当前值（前一个）
				b.splice(i, 1);
			} else {
				//将当前值和后一个值存入新数组
				b.push([a[i], a[i + 1]]);
				//跳过后一个值的索引
				i++;
			}
		}
	}
	if(b.length <= 0) {
		return "该数组无正确的前后值";
	}
	return b;

	//循环指定字符的二维数组
	//	for(var j = 0; j < b.length; j++) {
	//		//获取话题数组
	//		c.push(str.substring(b[j][0] + 1, b[j][1]));
	//	}
}